home *** CD-ROM | disk | FTP | other *** search
/ Suzy B Software 2 / Suzy B Software CD-ROM 2 (1994).iso / adult_ed / weather / windchil.c < prev   
C/C++ Source or Header  |  1995-05-02  |  5KB  |  219 lines

  1. /*
  2. **++
  3. **  MODULE DESCRIPTION:
  4. **
  5. **      This is the wind chill calculating module and related functions.
  6. **
  7. **  AUTHORS:
  8. **
  9. **      Phil Baughn (BASIC version)
  10. **    Rod Falanga (C version)
  11. **
  12. **  CREATION DATE:  18 October 1990
  13. **
  14. **  DESIGN ISSUES:
  15. **
  16. **      A. This module will also be dominated by a large do loop, which will
  17. **       remain in effect so long as the User responses to the question
  18. **       about wanting to do more wind chill calculations in the affirmative.
  19. **    B. Within the do loop, the first thing done is the screen is cleared
  20. **       and this module's name is given with the system's current date
  21. **       and time.
  22. **    C. The temperature is entered by the User.
  23. **    D. The wind speed is entered by the User.
  24. **    E. Calculations are then performed and the wind chill is displayed
  25. **       to the User.
  26. **    F. The User is asked if they wish to perform another wind chill
  27. **       calculation.  Depending upon their response, they either will
  28. **       or they won't.
  29. **
  30. **  KEYWORDS:
  31. **   
  32. **      WIND CHILL
  33. **   
  34. **  MODIFICATION HISTORY:
  35. **
  36. **      {@tbs@}...
  37. **--
  38. */
  39.  
  40.  
  41. /*
  42. **
  43. **  INCLUDE FILES
  44. **
  45. */
  46.  
  47. #ifdef VMS
  48. #include math
  49. #include stdio
  50. #else
  51. #include <math.h>
  52. #include <stdio.h>
  53. #endif
  54.  
  55. /*
  56. **
  57. **  MACRO DEFINITIONS
  58. **
  59. */
  60.  
  61. #define DUMMY_LEN    50
  62.  
  63.  
  64. /*
  65. **++
  66. **  FUNCTIONAL DESCRIPTION:
  67. **
  68. **      This is the main wind chill function.
  69. **
  70. **--
  71. */
  72. #ifdef VMS
  73. void wind_chill (void)
  74. #else
  75. void wind_chill ()
  76. #endif
  77. {
  78. #ifdef VMS
  79.     extern void position (int, int), 
  80.                 print (char *), 
  81.                 get_date_time (char *, char *), 
  82.                 get_string (char *), 
  83.                 display_wind_chill (double);
  84. #else
  85.     extern void position (), 
  86.                 print (), 
  87.                 get_date_time (), 
  88.                 get_string (), 
  89.                 display_wind_chill ();
  90. #endif
  91.     char date [DUMMY_LEN], 
  92.          time [DUMMY_LEN], 
  93. #ifdef VMS
  94.          *uppercase (char *), 
  95. #else
  96.          *uppercase (), 
  97. #endif
  98.          again [DUMMY_LEN];
  99. #ifdef VMS
  100.     double get_double (void), 
  101. #else
  102.     double get_double (), 
  103. #endif
  104.        temperature, 
  105.        wind_speed, 
  106.        t1, 
  107.        tc, 
  108.        h, 
  109.        x, 
  110.        x1, 
  111.        integer_part, 
  112.        factional_part;
  113.     int zz;
  114.  
  115.     /*     
  116.     **  Enter the main do loop.
  117.     */     
  118.     do
  119.     {
  120.         /*     
  121.         **  Clear the screen, mention the name of this function and display
  122.     **  the system's current date and time.
  123.         */     
  124.     Erase();
  125.     position(2, 27);
  126.     print("WIND CHILL CALCULATION");
  127.         get_date_time (date, time);
  128.     position(4, 34);
  129.     print(date);
  130.     position(5, 35);
  131.     print(time);
  132.  
  133.         /*     
  134.         **  Get the temperature.
  135.         */     
  136.     position(7, 12);
  137.     print("ENTER TEMPERATURE IN FAHRENHEIT                    ");
  138.     temperature = get_double();
  139.  
  140.         /*     
  141.         **  Get the wind's speed.
  142.         */     
  143.     position(8, 12);
  144.     print("ENTER WIND SPEED IN MILES PER HOUR                 ");
  145.     wind_speed = get_double();
  146.  
  147.         /*     
  148.         **  Now start the lenghty algorithm to determine the wind chill.
  149.         */     
  150.         if (wind_speed <= 4.)
  151.             wind_speed = 4.;
  152.     t1 = temperature;
  153.     wind_speed = (wind_speed * 1609.35) / (3600.);
  154.     tc = 33. - ((temperature - 32.) * (5. / 9.));
  155.         h = (10.45 + (sqrt (wind_speed) * 10.) - wind_speed) * tc;
  156.     x = h - 506.784;
  157.  
  158.         if (x < 0.)
  159.             display_wind_chill (t1);
  160.         else
  161.         {
  162.         x1 = 50 - (x / 12.3);
  163.             factional_part = modf ((((x1 * 10.) + 5.) / 10.), &integer_part);
  164.         x1 = integer_part;
  165.         position (11, 19);
  166.         print ("PLEASE WAIT - WIND CHILL BEING COMPUTED");
  167.             for (zz = 0;  zz < 1600;  zz++)
  168.                 ;
  169.         position (13, 17);
  170.         print ("T1=T:V=(V*1069.35)/3600:TC=33-((T-32)*(5/9))");
  171.         position (14, 20);
  172.         print ("H=(10.45+(SQR(V)*10)-V)*TC:X=H-506.784");
  173.         position (15, 21);
  174.         print ("X1=50-(X/12.3):X1=INT(((X1*10)+5)/10)");
  175.             display_wind_chill (x1);
  176.         }
  177.  
  178.         /*     
  179.         **  Now, ask the User if they want to do it again.
  180.         */     
  181.     position(24, 19);
  182.     print("RUN ANOTHER WIND CHILL FACTOR (Y/N)");
  183.     get_string(again);
  184.     } while (again[0] == 'Y' || again[0] == 'y');
  185. }   /* end of wind_chill() */
  186.  
  187. /*
  188. **++
  189. **  FUNCTIONAL DESCRIPTION:
  190. **
  191. **      This function will display to the User the current wind chill
  192. **  factor.
  193. **
  194. **  FORMAL PARAMETERS:
  195. **
  196. **      wind_chill:
  197. **          a double
  198. **
  199. **--
  200. */
  201. #ifdef VMS
  202. static void display_wind_chill (double wind_chill)
  203. #else
  204. static void display_wind_chill (wind_chill)
  205. double wind_chill;
  206. #endif
  207. {
  208.     char wind_chill_str [DUMMY_LEN*2];
  209. #ifdef VMS
  210.     extern void position (int, int), print (char *);
  211. #else
  212.     extern void position (), print ();
  213. #endif
  214.  
  215.     sprintf (wind_chill_str, "WIND CHILL TEMPERATURE = %.1f DEGREES FAHRENHEIT", wind_chill);
  216.     position(19, 15);
  217.     print(wind_chill_str);
  218. }   /* end of display_wind_chill() */
  219.